#pragma once

#include "iostream"
#include "vector"
#include "algorithm"

using namespace std;
/*HJJ QQ479287006
 给两个整数数组 nums1 和 nums2 ，返回 两个数组中 公共的 、长度最长的子数组的长度 。

 

示例 1：

输入：nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]
输出：3
解释：长度最长的公共子数组是 [3,2,1] 。
示例 2：

输入：nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0]
输出：5

来源：力扣（LeetCode）
链接：https://leetcode.cn/problems/maximum-length-of-repeated-subarray
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。*
 * */
int findLength(vector<int>& nums1, vector<int>& nums2) {
//TODO 明确的说 我擦我不会

    vector<vector<int>> dp(nums1.size()+1,vector<int>(nums2.size()+1,0));

    int maxv=0;
    for (int i = 1; i <=nums1.size() ; ++i) {
        for (int j = 1; j <=nums2.size() ; ++j) {

            if (nums1[i-1]==nums2[j-1] )
            {
                dp[i][j]=dp[i-1][j-1]+1;
            }

            maxv=max(maxv,dp[i][j]);


        }
    }


    return maxv;


}